//********************************************************************************************************
// Product Name: MapWindow.dll Alpha
// Description:  The basic module for MapWindow version 6.0
//********************************************************************************************************
// The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); 
// you may not use this file except in compliance with the License. You may obtain a copy of the License at 
// http://www.mozilla.org/MPL/ 
//
// Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF 
// ANY KIND, either expressed or implied. See the License for the specificlanguage governing rights and 
// limitations under the License. 
//
// The Original Code is from MapWindow.dll version 6.0
//
// The Initial Developer of this Original Code is Ted Dunsford. Created 6/24/2008 12:14:02 PM
// 
// Contributor(s): (Open source contributors should list themselves and their modifications here). 
//
//********************************************************************************************************

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;

using Microsoft.DirectX.Direct3D;

namespace MapWindow.DirectX
{


    /// <summary>
    /// DrawArgs
    /// </summary>
    public class DrawArgsDX: EventArgs
    {
        #region Private Variables

        private Device _device;
        private Camera _camera;
        private int _part;
        private int _stage;
        #endregion

        #region Constructors

        /// <summary>
        /// Creates a new instance of DrawArgs
        /// </summary>
        /// <param name="inDevice">The Microsoft.DirectX.Device to draw to</param>
        /// <param name="inCamera">The Camera structure specifying the view orientation</param>
        public DrawArgsDX(Device inDevice, Camera inCamera)
        {
            _device = inDevice;
            _camera = inCamera;
        }

        /// <summary>
        /// Creates a DrawArgs, and specifies the sub-part to draw
        /// </summary>
        /// <param name="inDevice">The Microsoft.DirectX.Device to draw to</param>
        /// <param name="inCamera">The Camera structure specifying the view orientation</param>
        /// <param name="inPart">The integer part index which is 0 by default</param>
        public DrawArgsDX(Device inDevice, Camera inCamera, int inPart)
        {
            _device = inDevice;
            _camera = inCamera;
            _part = inPart;
        }

        /// <summary>
        /// Creates a DrawArgs, and specifies the sub-part to draw
        /// </summary>
        /// <param name="inDevice">The Microsoft.DirectX.Device to draw to</param>
        /// <param name="inCamera">The Camera structure specifying the view orientation</param>
        /// <param name="inPart">The integer part index which is 0 by default</param>
        /// <param name="inStage"></param>
        public DrawArgsDX(Device inDevice, Camera inCamera, int inPart, int inStage)
        {
            _device = inDevice;
            _camera = inCamera;
            _part = inPart;
            _stage = inStage;
        }



        #endregion

        #region Methods

        #endregion

        #region Properties

        /// <summary>
        /// Gets the drawing device
        /// </summary>
        public Device Device
        {
            get { return _device; }
            protected set { _device = value; }
        }

      
        /// <summary>
        /// Gets the Camera
        /// </summary>
        public Camera Camera
        {
            get { return _camera; }
            protected set { _camera = value; }
        }

        /// <summary>
        /// Gets the integer part index, which is 0 if there is only 1 part.
        /// </summary>
        public int Part
        {
            get { return _part; }
            protected set { _part = value; }
        }

        /// <summary>
        /// Gets the integer representing the drawing pass.
        /// </summary>
        public int Stage
        {
            get { return _stage; }
            protected set { _stage = value; }
        }

        #endregion



    }
}
